Copyright: CPU Test Help file (by const)


CPU RM Instructions
CPU RightMark Instruction

The CPU RightMark program needs adjusting before testing a performance of a computational system.

•	It is necessary to assign a set of instructions (FPU or SSE2) for a unit of modeling of a physical process. The results of operation of this unit will reflect a performance of realization of the given instruction set.

•	It is necessary to choose an instruction set for a unit of physical process visualization (FPU + General MMX, FPU + Enhanced MMX, SSE + Enhanced MMX). If a scene drawing speed is to be analyzed the rendering mode must be enabled in the system memory, otherwise a performance of a video system, namely, a write speed into the video memory, will affect the results.

•	It’s necessary to adjust display parameters: a screen resolution, a window size, texture usage (MMX is used for texturing); set shadow quality (shadows and quality shadows are realized via the SSE); and disable a free camera otherwise a drawing speed will depend on its movement.

•	A physical process must be chosen after that – set a time step which is to be used in computation solutions of differential equations, and the number of steps of modeling of the system between visualizations.

•	Then it is needed to set a test time, a frame number to start measurements with, and the number of frames in the test. Note that stable repeatable results can be obtained after half a minute of the test is running.


Testing method

This program simulates in a real time mode behavior of a system consisting of a number of objects. Objects interaction is  described by laws of gravitation in the viscous medium.

The following system of differential equations is solved using the numerical method:

The current state of the system is visualized with the help of VirtualRay (Spherical Engine) - a software 3D graphics engine based on a ray tracing method.

Performance of different PC subsystems is evaluated by measuring the execution time of mathematical calculation routines in the program. Test is built to exclude setup times, visualization times and input/output delays from measurements and is pretty much independent from graphics and disc subsystem performance.

A block that solves a system of differential equations (Solver) and is used in measurements has two implementations. Implementations have the same functionality and differ only in a set of processor instructions used. One implementation is developed using the instruction set of the x87 coprocessor (Task_FPU.dll), the other is using the SSE2 (Task_SSE2.dll).

By measuring the execution time of  the Solver it is possible to test performance of the ‘processor + memory’ subsystem under intensive integer and  floating point math workloads. Floating point numbers use double precision (double).

The visualizer is divided into two relatively independent blocks of different structure and with different instruction sets. The first block called Prerendering is written in C++ and is compiled with the x87 instructions. The second block is tracing rays that correspond to the screen pixels and then renders it. Block is written in Assembler and has tree implementations optimized for different instruction sets: FPU+MMX, FPU+EMMX and SSE+EMMX variants.

By measuring the execution time of these blocks it is possible to evaluate the performance of the system under typical 3D graphics workloads. It helps evaluating the efficiency of different instruction sets. Almost all calculations are implemented with real numbers of single precision (float), that is well enough for most 3D graphics visualization needs.

The prerendering block performance evaluates the implementation of complicated algorithms written in higher-level languages with basic compiler optimizations. A ray tracing block performance (rendering) evaluates the performance of graphics programs optimized for SSE and EMMX.

Visualization happens  in every n steps of the numerical solving of the equation, where n could be set as a parameter. That is why the process is faster on more powerful systems, and it is well noticeable as the model evolves faster.

The execution time also depends on a complexity of a rendering scene. Increasing screen resolutions, number of objects and image quality requirements may significantly increase the overall execution time.

Note on math model

Computational modeling is widely used to describe real world systems. Math models of objects interacting in pairs are quite complicated to solve because the amount of computations increases the power of two with the power of two on the object number. Traditionally there were super-computers used to calculate an evolution of a system of gravitating objects. However, power of modern personal computers is enough to model a system with a limited number of objects.

The given numerical scheme supports different types of potentials in one-to-one interaction. The interaction has three contributing factors:

1.	1/R (as you can see, the corresponding potential increases without limit at infinity)

2.	1/(R*R) (this is a gravitational or Coulomb force)

3.	The distance at which an attractive force is replaced by repulsion. This contributing factor is included in equations with viscosity (otherwise, potential energy would decrease without limit, thus, causing growth of kinetic energy and loosening of the system).

Furthermore, the objects move in the viscous medium.


Profile description

Section [common]

ShowSplash=1	; shows a splash screen when the program is started. Here the user interface language is chosen(see below)

Windowed=1	; an internal flag. If you choose a non-zero value, the dialog window will contain a checkbox to run tests in windowed mode. This is used for debugging. (do not edit)

FontSize=0	; true type font name and size used for custom purposes (model description, diagrams)

FontName=Arial Narrow	;

Language=russian	; a language name of the selected user interface coincides with a name of the resource library which contains the corresponding text strings, dialog templates, etc..

DemoName=P4Logo	; module name for CPU test demo mode.

Videomode=1024x768	; a default video mode the test operates in. It is used in carrying out of a series of tests with a different processor instruction set (FPU, MMX, SSE, SSE2).

Section [modules]	; One of the libraries below is started with respect of the chosen instruction set of the Math Solver (FPU, SSE2, Demo). One can also add any other library implemented differently. Specifications on the API can be found in the source code files supplied.

commandset0=task_FPU.dll

commandset3=task_SSE2.dll

commandset100=task_demo.dll

Section [languages]	; a list of all interface languages supported and a name line which appears in the combo-box on the language panel.

default=English (default)

russian=Russian


Press this button to save results on hard disk.


Select testing model using it name. See a brief model description below.


Check this radio button to use general float point instructions in test code.


Check this radio button to use MMX(tm) instructions in test code.


Check this radio button to use MMX(tm) Extensions in test code.


Check this radio button to use SSE instructions in test code.


Check this radio button to use SSE2 instructions in test code.


Check this radio button to run CPU test demo.


Check this control to add shadows in rendered 3D scene.


Check this control to add quality shadows in rendered 3D scene. Enabled if “Shadows” control checked.


Check this control to use texturing in rendered 3D scene.


Check this control to enable free camera to be flying on scene.


Check this control to enable offscreen rendering mode to eliminate dependency on video subsytem power.


Number of frames from OK button strike to CPU test start. Valid value range from 10 (~1 second) to 1000 (~1 minute).


Number of frames rendered during the test activity. Valid value range from 10 (~1 second) to 1000000 (~10 hours).


Number of iterations between rendering function calls. Valid value range from 1 to 1000, default value is 10.


Time pitch for scene processing. Valid value from  0.001 ms.


This check-box controls splash screen appearance. Use it to change User Interface working language.


This check-box controls windowed/fullscreen mode switching. Use windowed mode for debug purposes only.


Choose screen mode parameters to render test graphics. There are all resolutions supported by DirectDraw.


Viewport horizontal size in percents. Minimal value is 10.


Viewport vertical size in percents. Minimal value is 10.


CPU Test results diagram.